
package edu.upc.clase.demo.controller;

import edu.upc.clase.demo.entity.Credential;
import edu.upc.clase.demo.entity.CriterioBusqueda;
import edu.upc.clase.demo.entity.JsonResponse;
import edu.upc.clase.demo.entity.Accesorio;
import edu.upc.clase.demo.service.AccesorioService;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

@Controller("AccesorioController")
public class AccesorioController {
    
    @Autowired
    private AccesorioService AccesorioService;
    private static Logger log = LoggerFactory.getLogger(AccesorioController.class);
    private Object accesorio;
    
    @RequestMapping("/Accesorio/index")
    public ModelAndView index() {
        ModelAndView mav = new ModelAndView("Accesorio/index");
        List<Accesorio> accesorio = AccesorioService.buscarTodos();
        CriterioBusqueda criterioBusqueda = new CriterioBusqueda();
        mav.addObject("Accesorio", accesorio);
        mav.addObject("criterioBusqueda",criterioBusqueda);
        return mav;
    }
 
    @RequestMapping(value = "/accesorio/new", method = RequestMethod.GET)
    public ModelAndView newAccesorio() {
        ModelAndView mav = new ModelAndView("accesorio/new");
        Accesorio accesorio = new Accesorio();
        mav.getModelMap().put("accesorio", accesorio);
        return mav;
    }
    
     @RequestMapping(value = "/accesorio/new", method = RequestMethod.POST)
    public String createAccesorio(@ModelAttribute("accesorio")Accesorio accesorio, 
                                SessionStatus status,
                                HttpServletRequest request) {
    
   AccesorioService.insertar(accesorio);
   
   /*
   try {
            MultipartFile avatar = servicioAdicional.getAvatar();

            if (avatar.getSize() > 0) {
                File dir = new File(request.getSession().getServletContext().getRealPath("") 
                                       + "/upload/");
                
                if (!dir.exists()) {
                    dir.mkdirs();
                }
                File destinationFile = new File(request.getSession().getServletContext().getRealPath("") 
                                       + "/upload/"+ avatar.getOriginalFilename());
                avatar.transferTo(destinationFile);
                             
            }
    } catch (IOException iOException) {
            log.error("No se pudo guardar la imagen");
        }
   */     
        status.setComplete();

        return "redirect:/pages/accesorio/index";
        
    }
   
  @RequestMapping(value = "/accesorio/edit", method = RequestMethod.GET)
    public ModelAndView editAccesorio(@RequestParam("descAcces")String descAcces) {    
        ModelAndView mav = new ModelAndView("accesorio/edit");
        Accesorio accesorio = AccesorioService.buscar(descAcces);
        mav.getModelMap().put("accesorio", accesorio);
        return mav;        
    }
    
    @RequestMapping(value="/accesorio/edit", method=RequestMethod.POST)
    public String update(@ModelAttribute("accesorio") Accesorio accesorio, SessionStatus status) {
        AccesorioService.actualizar(accesorio);
        status.setComplete();
        return "redirect:/pages/accesorio/index";
    }
    
    @RequestMapping("/accesorio/delete")
    public ModelAndView delete(@RequestParam("descSerAdic")String descAcces)
    {
        ModelAndView mav = new ModelAndView("redirect:/pages/accesorio/index");
        Accesorio accesorio = AccesorioService.buscar(descAcces);
        AccesorioService.eliminar(accesorio);
        return mav;
    }
    
    /*@RequestMapping("/servicioAdicional/login")
    public ModelAndView login() {
        ModelAndView mav = new ModelAndView("servicioAdicional/login");
        Credential credential = new Credential();
        mav.getModelMap().put("credential", credential);
        return mav;
    } 
    */   
        
    @RequestMapping("/accesorio/logout")
    public String logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return "redirect:/pages/accesorio/login";
    }        
       
    @RequestMapping(value = "/listarAccesorio", method = RequestMethod.GET, produces = "application/json")
    public @ResponseBody JsonResponse listMyFiles() {
        List<Accesorio> accesorio = AccesorioService.buscarTodos();
        return new JsonResponse(true, accesorio);
    }
  }